package pe.gob.foncodes.ssa.bs.common.util;

import java.io.*;

import org.jfree.util.Log;

public class BDHelper {

    /**
     * Metodo que administra los ORA-ERROR generados por la base de datos
     * @param erroSQL - Metodo de tipo Exception que contiene el error que se genero 
     * al ejecutar el proceso en la base de datos
     * 
     * @return Mensaje de error
     */
    public static String getSQLError(Exception erroSQL) {
        try {
            StringWriter sw = new StringWriter();
            PrintWriter pw = new PrintWriter(sw);
            erroSQL.printStackTrace(pw);

            String value = sw.toString().substring(sw.toString().indexOf("ORA-") + 4, sw.toString().indexOf("ORA-") + 9);
            String mensaje = null;
            switch (Integer.valueOf(value)) {
                case 1:
                    mensaje = "Se desea grabar un registro que ya existe";
                    break;
                case 18:
                    mensaje = "Base de datos, no responde";
                    break;
                case 22:
                    mensaje = "Error, por invalidacion de logueo a la base de datos";
                    break;
                case 100:
                    mensaje = "Error, no encuentra data que se busca";
                    break;
                case 911:
                    mensaje = "Error, por motivos de caracter invalido";
                    break;
                case 1033:
                    mensaje = "Error, la base de datos se esta apagando";
                    break;
                case 1073:
                    mensaje = "Error, fallas de conexion con la base de datos";
                    break;
                case 1426:
                    mensaje = "Error, por numero muy grande";
                    break;
                case 1456:
                    mensaje = "Error, No se puede ejecutar operacion";
                    break;
                case 1489:
                    mensaje = "Error, Cadena a procesar es muy larga";
                    break;
                case 2043:
                    mensaje = "Error, No se pudo ejecutar accion";
                    break;
                case 2292:
                    mensaje = "Error, por integridad de data";
                    break;
                case 12336:
                    mensaje = "Error, No pudo sincronizar con base de datos";
                    break;
                case 13009:
                    mensaje = "Error, Cadena ingresada es invalida";
                    break;
                case 13011:
                    mensaje = "Error, Valor muy largo";
                    break;
                case 22973:
                    mensaje = "Error, Cadena que se quiere modificar es muy larga de la permitida";
                    break;
                case 29355:
                    mensaje = "Error, Faltan llenar campos";
                    break;// Error por recibir null
                case 32802:
                    mensaje = "Error, Al intentar ingresar un valor que no es cadena";
                    break;
                case 32806:
                    mensaje = "Error, Uno de los valores a ingresar es muy largo";
                    break;
                case 38101:
                    mensaje = "Error, No se pudo insertar la data requerida";
                    break;
                case 38103:
                    mensaje = "Error, No se pudo actualizar registro";
                    break;
                default:
                    mensaje = "Error al ejecutar la operacion";
                    break;

            }

            return mensaje;
        } catch (Exception ex) {
            Log.info("Error al ejecutar la clase DBHelper" + ex.getMessage());
            return "Error al ejecutar la operacion, error controlado";
        }
    }
}
